/**
* \file Terrain.h
* Définie les fonctions utilisées dans Terrain.cpp
*/
#ifndef _TERRAIN_H
#define _TERRAIN_H

#include<stdio.h>
//#include"Forme.h"
#include"Constantes.h"
//#include"AfficheJeuSDL.h"

/**
 * \struct Terrain
 * \brief définie une forme en fonction du type de forme, de ses coordonnées et de son orientation
 */
typedef struct
{
    int dimX;
    int dimY;
    Case ter[100][100];
} Terrain;

/**
* \brief Initialise le terrain avec une hauteur de 20 blocs et de 10 blocs où l'on met VIDE
*/
void TerInitialise (Terrain & t);

/**
* \brief Test si le déplacement de la pièce est possible
* \param x coordonnée en x où l'on veut tester la position
* \param y coordonnée en y où l'on veut tester la position
*/
bool TerPositionValide(const Terrain & t, const int x, const int y);

/**
* \brief Retourne la valeur d'une case du terrain
* \param x coordonnée en x où l'on veut récuperer la valeur
* \param y coordonnée en y où l'on veut récuperer la valeur
*/
Case TerGetXY(const Terrain & t, const int x, const int y);

/**
* \brief Retourne la largeur du terrain
*/
int TerGetDimX(const Terrain & t);

/**
* \brief Retourne la hauteur du terrain
*/
int TerGetDimY(const Terrain & t);

/**
* \brief Efface une ligne complète
* \param y coordonnée de la ligne à effacer
*/
void TerEffaceur (Terrain & t, int y);

bool TerTestFinJeu(Terrain & t);


/**
* \brief Prend une pièce au hasard
*/
//void TerNouvellePiece(Forme * pieceactuelle,Forme * piecesuivante);


#endif
